iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
Modern Web

Node.js 非專業解說系列 第 21

DAY21: NPM模塊管理工具

  • 分享至 

  • xImage
  •  

NPM是Node Package Manager的縮寫,中文直接翻的話就是Node包管理工具,
比較專業則稱為模塊管理工具,是用JavaScript所編寫的軟件管理系統。

起源:

起初Isaac Z. Schlueter這位先生意識到在模塊這個區塊管理的很糟糕,
並在2009年發布NPM。
其中Isaac Z. Schlueter借鑒了PHP、PERL等模塊管理工具,
經過迭代,並與Nodjs一拍即合,發展成在Nodejs舉足輕重的位置。

與Nodejs關係:

到Nodjs官網可以看到NPM是他們默認的模塊管理工具,
所以當我們直接安裝Nodjs時就會連NPM一起安裝下載
(Nodjs下載可以參考: DAY3: node.js安裝環境)

https://ithelp.ithome.com.tw/upload/images/20211002/20140244W1OXxCHRip.jpg

NPM中包含兩個重要的功能:

  • 模塊倉庫(Registry):
    上面有各式各樣的模塊,可能存在安全與不安全的模塊,
    是因為用戶可以通過NPM把自身設計的模塊放上去。
    而需要使用時,可以通過NPM指令下載安裝指定的模塊名稱,
    裡面都包含一個JSON的格式元文件。
    通常Nodejs的模塊主要有內置模塊,像是例子中很常用的fs、Http模塊,
var fs=require("fs");
var http=require("http");

可以直接透過require導入或是被調用。
另外還有NPM Registry第三方模塊,當在內置模塊找不到想要的模塊時,
就可以透過模塊倉庫查詢並下載安裝。

  • CLI命令列介面(Command Line Interface):
    可以文字透過CLI命令列介面來下載、卸載、更新第三方模塊,
    沒有花俏的圖形按鈕介面,就很單純的黑底白字,
    像是我們在Window PowerShell的介面一樣。
    確定npm CLI是否安裝,在終端機輸入 npm – v

https://ithelp.ithome.com.tw/upload/images/20211002/20140244GZ5Wf3E7WT.png

我安裝的版本為 6.14.14。
若要安裝第三方模塊,比如說express在NPM官網可以看到下載數量非常驚人,
那就來安裝看看express塊。
首先要先初始化所在目錄,輸入 npm init

https://ithelp.ithome.com.tw/upload/images/20211002/20140244fu6nMPA90C.png

在初始化目錄的過程中會問一些問題,最後回答yes後,
會產生一個文件在所在的目錄中名為 package.json
https://ithelp.ithome.com.tw/upload/images/20211002/20140244mGG3C33EMV.png
https://ithelp.ithome.com.tw/upload/images/20211002/20140244njSX9xeonR.png

文件內容是儲存一些項目相關的訊息。
開始安裝express模塊,輸入 npm i express (= npm install 模塊名)

https://ithelp.ithome.com.tw/upload/images/20211002/20140244FTEF5j8sm7.png

安裝成功後,在package.json檔案中也會出現一組訊息

https://ithelp.ithome.com.tw/upload/images/20211002/20140244aCnFKlYF09.png

代表現在需要依賴第三方模塊叫做express。
由此可知日後不管下載哪一個第三方模組,都會出現在這裡!
接下來就可以直接用require來導入express來使用!

var express=require("express");

卸載模塊時,輸入npm uninatall express
https://ithelp.ithome.com.tw/upload/images/20211002/20140244vpAHocOgig.png


上一篇
Day20: EventEmitter
下一篇
DAY22: 為甚麼要模組化?
系列文
Node.js 非專業解說30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言